<?php
/*验证码
*在php.ini中将extension=gd2放开
*/
// 开启session,开启前不能有任何输出
session_start();

// 画布宽高
$w=100;
$h=30;
$tsize=16; //字体尺寸

// 准备画布资源,返回一个图像标识符，代表了一幅大小为 x_size 和 y_size 的黑色图像
$im=imagecreatetruecolor($w,$h);

// 准备涂料,返回一个标识符，代表了由给定的 RGB 成分组成的颜色。必须被调用以创建每一种用在 image 所代表的图像中的颜色
$textColor=imagecolorallocate($im,0,0,0);
$bgColor=imagecolorallocate($im,200,200,200);

// 背景填充,在 image 图像的坐标 x，y（图像左上角为 0, 0）处用 color 颜色执行区域填充（即与 x, y 点颜色相同且相邻的点都会被填充）。
imagefill($im,0,0,$bgColor);

// 文字坐标
$x=($w-$tsize*4)/2;
$y=($h-$tsize)/2+$tsize;

// 准备文字,array_merge — 合并一个或多个数组,range — 根据范围创建数组，包含指定的元素
$strArr=array_merge(range(0,9),range('a','z'),range('A','Z'));
shuffle($strArr); //打乱数组
$str=join('',array_slice($strArr,0,4)); //将一维数组的值连接成字符串

// 将$str放入session中，方便所有页面使用
$_SESSION['vstr']=$str;

// 引入字体
$file="F:/Aphp/phpSite/myshop/public/fonts/actionj.ttf";

//使用 TrueType 字体将 指定的 text 写入图像,参数：图像、字体尺寸、角度、x坐标、y坐标、字体颜色、字体路径、文本
imagettftext($im,$tsize,0,$x,$y,$textColor,$file,$str);

// 输出图像
header("content-type:image/png");
imagepng($im); //以 PNG 格式将图像输出到浏览器或文件

// 释放画布资源，释放与image关联的内存
imagedestroy($im);

?>